Skip to main content
Glama
route.tsx2.94 kB
import { handlers } from "@/mcpauth" import { NextRequest } from "next/server"; const logRequest = async (req: NextRequest) => { const url = req.nextUrl.clone(); console.log(`\n--- Start Request: ${req.method} ${url.pathname}${url.search} ---`); console.log(`[${new Date().toISOString()}]`); console.log('Request Headers:', Object.fromEntries(req.headers.entries())); const contentType = req.headers.get('content-type'); if (req.headers.get('content-length') || req.headers.get('transfer-encoding')) { const clonedReq = req.clone(); if (contentType?.includes('application/json')) { try { const body = await clonedReq.json(); console.log('Request Body (json):', body); } catch (e) { console.log('Request Body (raw json):', await clonedReq.text()); } } else if (contentType?.includes('application/x-www-form-urlencoded')) { const formData = await clonedReq.formData(); console.log('Request Body (form):', Object.fromEntries(formData.entries())); } else { console.log('Request Body: Present (type not logged)'); } } }; const logResponse = async (res: Response) => { console.log(`--- End Request ---`); console.log(`Status: ${res.status}`); console.log('Response Headers:', Object.fromEntries(res.headers.entries())); const clonedRes = res.clone(); if (res.status === 302) { console.log('Redirecting to:', clonedRes.headers.get('location')); } else { const contentType = clonedRes.headers.get('content-type'); if (contentType?.includes('application/json')) { try { const body = await clonedRes.json(); console.log('Response Body:', body); } catch (e) { console.log('Response Body (raw json):', await clonedRes.text()); } } else { const bodyText = await clonedRes.text(); if (bodyText) { const truncatedBody = bodyText.slice(0, 500) + (bodyText.length > 500 ? '...' : ''); console.log('Response Body (raw):', truncatedBody); } } } console.log(`-----------------\n`); }; const originalGET = handlers.GET; const originalPOST = handlers.POST; const originalOPTIONS = handlers.OPTIONS; export const GET = async (req: NextRequest, context: { params: any }) => { await logRequest(req); const response = await originalGET(req, context); await logResponse(response); return response; }; export const POST = async (req: NextRequest, context: { params: any }) => { await logRequest(req); const response = await originalPOST(req, context); await logResponse(response); return response; }; export const OPTIONS = async (req: NextRequest, context: { params: any }) => { await logRequest(req); const response = await originalOPTIONS(req, context); await logResponse(response); return response; };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpauth/mcpauth'

If you have feedback or need assistance with the MCP directory API, please join our Discord server